home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / applications / wp / fwmacros1.lha / UserMacros / english / VerticalCenter.fw < prev   
Encoding:
Text File  |  1994-10-04  |  1.9 KB  |  81 lines

  1. /*
  2. $AUTHOR:  Manuel Lemos (UpperDesign@zeus.ci.ua.pt)
  3. $VER: VerticalCenter 1.00 (2.10.94)
  4.       Description:  ARexx macro for FinalWriter to center all selected
  5.                     graphic objects in the middle of the topmost and
  6.                     bottommost graphics
  7. */
  8.  
  9. options results
  10.  
  11. GraphicTool
  12. SetMeasure
  13.  
  14. /* obter uma lista dos objectos seleccionados */
  15. selecionados = 0
  16. FirstObject SELECTED
  17. do until result = 0
  18.   selecionados = selecionados + 1
  19.   objectid.selecionados = result
  20.   NextObject objectid.selecionados SELECTED
  21. end
  22.  
  23. if selecionados > 1 then
  24. do
  25.  
  26.   OBJECTO_LINHA = 2
  27.  
  28.   /* determinar a coordenada dos objectos mais acima e mais abaixo */
  29.   do objecto = 1 to selecionados
  30.     GetObjectCoords objectid.objecto
  31.     coords = RESULT
  32.     PARSE VAR coords pagina esquerda cima direita baixo
  33.     GetObjectType objectid.objecto
  34.     tipo = result
  35.  
  36.     /* linhas */
  37.     if tipo = OBJECTO_LINHA then
  38.       do
  39.         if cima > baixo then
  40.           do
  41.             troca = cima
  42.             cima = baixo
  43.             baixo = troca
  44.           end
  45.       end
  46.     else
  47.       baixo = cima + baixo
  48.     if objecto = 1 | cima < mais_acima then
  49.       mais_acima = cima
  50.     if objecto = 1 | baixo > mais_abaixo then
  51.       mais_abaixo = baixo
  52.   end
  53.  
  54.   /* centrar os objectos */
  55.   centro = ( mais_abaixo + mais_acima ) / 2
  56.   do objecto = 1 to selecionados
  57.     GetObjectCoords objectid.objecto
  58.     coords = RESULT
  59.     PARSE VAR coords pagina esquerda cima direita baixo
  60.     GetObjectType objectid.objecto
  61.     tipo = result
  62.  
  63.     /* linhas */
  64.     if tipo = OBJECTO_LINHA then
  65.       do
  66.         meia_largura = ( baixo - cima ) / 2
  67.         baixo = centro + meia_largura
  68.         cima = centro - meia_largura
  69.       end
  70.     else
  71.       cima = centro - baixo / 2
  72.     SetObjectCoords objectid.objecto pagina esquerda cima direita baixo
  73.   end
  74.  
  75.   /* voltar a selecionar todos os objectos selecionados antes */
  76.   do objecto = 1 to selecionados
  77.     SelectObject objectid.objecto MULTIPLE
  78.   end
  79.   redraw
  80. end
  81.